package com.caltco.cargo.ops.common.utils;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @program: agilefast-framework
 * @description: Map转String工具
 * @author: yehao
 * @create: 2022-07-21 11:02
 **/

public class MapString {
    /**
     *
     * Map转String
     * 1、获取map的key的set集合 转换成String数组
     * 2、循环String数组 拼接字符串 每个key value 一组间用 顿号隔开
     * @param map
     * @return
     */
    public static String mapConvertString(Map<String,Object> map){
        Set<String> keySet = map.keySet();
        //将set集合转换为数组
        String[] keyArray = keySet.toArray(new String[keySet.size()]);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < keyArray.length; i++) {
            // 参数值为空，则不参与签名 这个方法trim()是去空格
            if ((String.valueOf(map.get(keyArray[i]))).trim().length() > 0) {
                sb.append(keyArray[i]).append(":").append(String.valueOf(map.get(keyArray[i])).trim());
            }
            if(i != keyArray.length-1){
                sb.append(",");
            }
        }
        return sb.toString();
    }
    /**
     *
     * String转map
     * 通过顿号处理字符串 得到字符数组
     * 循环字符数组 冒号在处理字符 得到String数组 下标为0 是key 下标为 1是value 组成 key value 装进map
     * @param str
     * @return
     */
    public static Map<String,Object> stringConvertMap(String str){
        //根据逗号截取字符串数组
        String[] strArrayOne = str.split(",");
        Map<String,Object> map = new HashMap<>();
        //循环加入map集合
        for (String s : strArrayOne) {
            //根据":"截取字符串数组
            String[] strArrayTwo = s.split(":");
            //strArrayTwo[0]为key,strArrayTwo[1]value
            map.put(strArrayTwo[0], strArrayTwo[1]);
        }
        return map;
    }


}
